"""
可视化一个量化策略
你的任务是基于self.Logs给你的信息，可视化你认为重要的数据，请在visualization函数中完成
"""
import matplotlib.pyplot as plt
import pickle
import pandas
from Logging import Logs, Log
class Visualizer():
    def __init__(self, Logs):
        self.Logs = Logs #你会得到一个列表，这个列表的元素是Log, Log的定义参考Loggin下的Log

    def visualization(self):
        print("start visualizing")
        f=open('data.pkl','rb')
        content=pickle.load(f)   #读取原数据
        time_list=[]    #时间
        value_stg_list=[]    #策略在每个时间的价值形成的list
        value_maket_list=[]   #大盘指数价值
        money_start=self.Logs[0].value  #初始大盘指数价格
        market_start=money_start/content[self.Logs[0].time].loc['000001.XSHE','close'] #初始大盘指数持有量
        for log in self.Logs:
            time=log.time
            value_maket=content[time].loc['000001.XSHE','close']*market_start
            value_stg=log.value
            time_list.append(time)
            value_maket_list.append(value_maket)
            value_stg_list.append(value_stg)
# print(log.time) 这样可以输出时间
        fig=plt.figure() #建立画布
        ax=fig.add_subplot(1,1,1) #建立子图
        ax.plot(time_list,value_stg_list,"k-",label="strategy")  #策略的价值走向图
        ax.plot(time_list,value_maket_list,"k--",label="market index")  #大盘指数走向图
        plt.legend()
        ax.set_xlabel("time")
        ax.set_ylabel("value")
        print("visualization done")
        plt.show()
